// RAP [bm]: animations ///******************************************************************************* // * Copyright (c) 2007 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // ******************************************************************************/ // //package org.eclipse.ui.internal; // //import org.eclipse.core.runtime.IStatus; //import org.eclipse.swt.SWTException; //import org.eclipse.swt.graphics.Color; //import org.eclipse.swt.graphics.GC; //import org.eclipse.swt.graphics.Image; //import org.eclipse.swt.graphics.ImageData; //import org.eclipse.swt.widgets.Display; //import org.eclipse.swt.widgets.Shell; //import org.eclipse.ui.internal.misc.StatusUtil; //import org.eclipse.ui.statushandlers.StatusManager; // ///** // * Base class for Cyclic animations. // * // * @since 3.3 // * // */ //public abstract class ImageCycleFeedbackBase extends AnimationFeedbackBase { // protected Image[] images; // protected Image stoppedImage; // private Image offScreenImage; // private GC offScreenImageGC; // private int imageDataIndex; // private Image image; // private ImageData imageData; // protected Display display; // protected Color background; // // /** // * @param parentShell // */ // public ImageCycleFeedbackBase(Shell parentShell) { // super(parentShell); // // TODO Auto-generated constructor stub // } // // /** // * // * @param parentShell // * @param images : // * an array of images // */ // public ImageCycleFeedbackBase(Shell parentShell, Image[] images) { // super(parentShell); // this.images = images; // } // // /** // * Set the image during progress without caching. // * // * @param image // */ // public abstract void showImage(Image image); // // /** // * Save initial Image which would be stoppedImage // * // */ // public abstract void saveStoppedImage(); // // /** // * Set the stopped Image upon animation completion // * // * @param image // */ // public abstract void setStoppedImage(Image image); // // public void dispose() { // // TODO Auto-generated method stub // if (stoppedImage == null || stoppedImage.isDisposed()) // return; // setStoppedImage(stoppedImage); // // if (offScreenImageGC != null && !offScreenImageGC.isDisposed()) // offScreenImageGC.dispose(); // // if (offScreenImage != null && !offScreenImage.isDisposed()) // offScreenImage.dispose(); // } // // public boolean jobInit(AnimationEngine engine) { // return super.jobInit(engine); // } // // public void renderStep(AnimationEngine engine) { // // TODO Auto-generated method stub // if (offScreenImage == null) { // offScreenImage = getOffscreenImage(); // } // // try { // imageDataIndex = (imageDataIndex + 1) % images.length; // image = images[imageDataIndex]; // imageData = image.getImageData(); // // offScreenImageGC.drawImage(image, 0, 0, imageData.width, // imageData.height, imageData.x, imageData.y, // imageData.width, imageData.height); // // final Image finalImage = image; // // display.syncExec(new Runnable() { // /* // * (non-Javadoc) // * // * @see java.lang.Runnable#run() // */ // public void run() { // showImage(finalImage); // // } // }); // // /* // * Sleep for the specified delay time (adding commonly-used // * slow-down fudge factors). // */ // // try { // // Thread.sleep(30); // // } catch (InterruptedException e) { // // } // if (images == null) // return; // } catch (SWTException ex) { // IStatus status = StatusUtil.newStatus(WorkbenchPlugin.PI_WORKBENCH, // ex); // StatusManager.getManager().handle(status); // } // } // // private Image getOffscreenImage() { // saveStoppedImage(); // imageDataIndex = 0; // image = images[imageDataIndex]; // imageData = image.getImageData(); // /* // * Create an off-screen image to draw on, and fill it with the shell // * background. // */ // offScreenImage = new Image(display, imageData.width, imageData.height); // // offScreenImageGC = new GC(offScreenImage); // offScreenImageGC.setBackground(background); // offScreenImageGC.fillRectangle(0, 0, imageData.width, imageData.height); // // /* // * Create the first image and draw it on the off-screen image. // */ // // offScreenImageGC.drawImage(image, 0, 0, imageData.width, // imageData.height, imageData.x, imageData.y, imageData.width, // imageData.height); // // return offScreenImage; // } // //}